﻿(function ($) {
    $.fn.vaciarCheckBoxList = function () {
        return this.empty();
    }

    $.fn.CheckBoxList = function (dataParametros, dirURI, options) {
        var $self = this;
        this.hide();

        //Establecemos los valores por defecto
        opciones_default = {
            animationLoad: false,
            animationID: "",
            mensajeAllRegistros: 'Seleccionar todos los registros'
        }
        opciones = jQuery.extend(opciones_default, options);

        //Ocultamos el objeto y mostramos la animacion de carga si se hubiera establecido
        this.vaciarCheckBoxList();
        if (opciones.animationLoad) $('#' + opciones.animationID).fadeIn(100);

        var $li = $('<ul class="lista-normal"></ul>');
        //Ejecutamos la llamada AJAX para recoger los datos del lado del servidor
        $.ajax({
            url: dirURI,
            type: 'POST',
            data: dataParametros,
            success: function (data) {
                if (data.Result) {
                    $self.vaciarCheckBoxList();
                    //Verificamos que no existan "CERO" registros
                    if (data.Count == 0)
                        $self.append('<p>No se encontró ningún registro según los parámetros especificados</p>');
                    else {
                        //Agregamos el List 'Seleccionar Todos"
                        $li.append('<li class="CheckAll col-titulos" style="width: auto; text-align:left; "><input type="checkbox" data-lista="result-grados" value="0"/>' + opciones.mensajeAllRegistros + '</li>');
                        //Creamos un SubNivel UL
                        var $subnivel = $('<ul></ul>');

                        $.each(data.Records, function (key, value) {
                            $subnivel.append('<li name="result-grados" style="vertical-align:middle;"><input class="checklist-input" type="checkbox" value="' + key + '"/>' + value + '</li>');
                        });
                        $li.append($subnivel);
                        $self.append($li);
                    }
                }
                else
                    $self.append('<p>Lo sentimos, ocurrio un error al intentar recuperar los datos. ' + data.Mensaje + '</p>');

                //Mostramos de nuevo los objetos y ocultamos el control de load
                $('#' + opciones.animationID).hide();
                $self.fadeIn(150);
            },
            error: function (jqXhr, textStatus, errorThrown) {
                $('#' + opciones.animationID).hide();
                alert("Ocurrio un error del lado del servidor. " + jqXhr);
            }
        });
    };


    //Agregamos el Handler cuando se de Clic para seleccionar todos los elementos
    $('.CheckAll input[type=checkbox]').live('click', function (event) {
        //Recuperamos el nombre de la lista en la cual activaremos o desactivaremos todos los Checks
        var datalst = $(this).attr("data-lista");
        $('li[name="' + datalst + '"] .checklist-input').attr('checked', $(this).is(':checked'));
    });

})(jQuery);